package com.yellowpage.bigdata.service;

import java.util.List;
import java.util.Map;

import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;

import com.yellowpage.white.common.Constants;
import com.yellowpage.white.common.PageRender;
import com.yellowpage.white.dao.QueryAssistantSQL;
import com.yellowpage.white.service.BaseServiceImpl;
import com.yellowpage.bigdata.data.TmApponoffImeiRetain;
import com.yellowpage.bigdata.dao.TmApponoffImeiRetainDao;

public class TmApponoffImeiRetainServiceImpl extends BaseServiceImpl implements
		TmApponoffImeiRetainService {
	private TmApponoffImeiRetainDao tmApponoffImeiRetainDao;

	public void setTmApponoffImeiRetainDao(
			TmApponoffImeiRetainDao tmApponoffImeiRetainDao) {
		this.tmApponoffImeiRetainDao = tmApponoffImeiRetainDao;
	}

	/* Smooth generate Method */
	public TmApponoffImeiRetain getTmApponoffImeiRetain(Long id) {
		return tmApponoffImeiRetainDao.get(id);
	}

	public List<TmApponoffImeiRetain> getAllTmApponoffImeiRetain() {
		return tmApponoffImeiRetainDao.getAll();
	}

	public List<Map> queryTmApponoffImeiRetainByPage(Map queryMap,
			PageRender pageRender) {
		StringBuffer sql = new StringBuffer();
		sql.append(" SELECT  a.SHOW_DATE, a.IMEI_NEW_COUNT , ROUND(SUM(a.NEXT_DAY_RETAINED)*100,3) AS NEXT_RETAINED , ROUND(SUM(a.THREE_DAY_RETAINED)*100,3) AS THREE_RETAINED , ROUND(SUM(a.SEVEN_DAY_RETAINED)*100,3) AS SEVEN_RETAINED , ROUND(SUM(a.THIRTY_DAY_RETAINED)*100,3) AS THIRTY_RETAINED    FROM TM_APPONOFF_IMEI_RETAIN a WHERE");
		if (!"".equals(queryMap.get("startTime"))) {
			sql.append(" a.SHOW_DATE>=" + queryMap.get("startTime"));
		}
		if (!"".equals(queryMap.get("endTime"))) {
			sql.append(" AND a.SHOW_DATE<=" + queryMap.get("endTime"));
		}
		sql.append(" GROUP BY a.SHOW_DATE");
		
		QueryAssistantSQL sqlAssistant = baseDao.newQueryAssistantSQL(sql
				.toString());

		List<Map> resultList;

		// 当pageRender存在的时候，跳转
		if (pageRender != null) {
			resultList = sqlAssistant.queryByPage(baseDao.getConnection(),
					queryMap, pageRender);
		}

		// 否则取全量
		else

		{
			resultList = sqlAssistant.query(baseDao.getConnection(), queryMap);
		}
		return resultList;
	}

	public void saveTmApponoffImeiRetain(
			TmApponoffImeiRetain tmApponoffImeiRetain) {
		tmApponoffImeiRetainDao.save(tmApponoffImeiRetain);
	}

	public void updateTmApponoffImeiRetain(
			TmApponoffImeiRetain tmApponoffImeiRetain) {
		tmApponoffImeiRetainDao.update(tmApponoffImeiRetain);
	}

	public void delete(List deleteList) {
		tmApponoffImeiRetainDao.remove(deleteList);
	}

}